package models.vo {
  import org.restfulx.collections.ModelsCollection;
  import org.restfulx.models.RxModel;

  [Resource(name="empreendimentos")]

  [Bindable]
  public class Empreendimento extends RxModel {
    public static const LABEL:String = "codigo";

    public var filiais:String;

    public var objetivosSociais:String;

    public var beneficiosJaConcedidos:String;

    public var encerramentoExercicioSocial:Date;

    public var empregosDiretos:int;

    public var empregosTerceirizados:int;

    public var capitalSocialValor:Number;

    public var capitalSocialAtualizacao:Date;

    public var receitaUnidade:String;

    public var receitaLogradouro:String;

    public var receitaNumero:String;

    public var receitaBairro:String;

    public var receitaCep:String;

    [BelongsTo]
    public var pleito:Pleito;

    [BelongsTo]
    public var receitaMunicipio:Municipio;

    [HasOne]
    public var pjTitular:PessoaJuridica;

    [HasOne]
    public var pjObjeto:PessoaJuridica;

    [HasMany]
    public var componentesEmpreendimento:ModelsCollection;

    [HasMany(type="ComponenteEmpreendimento",through="componentesEmpreendimento")]
    public var gerentes:ModelsCollection;

    [HasMany(type="ComponenteEmpreendimento",through="componentesEmpreendimento")]
    public var conselheiros:ModelsCollection;

    [HasMany]
    public var acionistas:ModelsCollection;

    [HasMany]
    public var beneficios:ModelsCollection;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function Empreendimento() {
      super(LABEL);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getPjTitular():PessoaJuridica {
      return pjTitular || getPjObjeto();
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getPjObjeto():PessoaJuridica {
      if (!pjObjeto)
        pjObjeto = new PessoaJuridica();

      return pjObjeto;
    }

    public function pjObjetoIgualPjTitular():Boolean {
      return getPjTitular().id == getPjObjeto().id;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getGerentes():ModelsCollection {
      if (!gerentes)
        gerentes = new ModelsCollection();

      return gerentes;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getConselheiros():ModelsCollection {
      if (!conselheiros)
        conselheiros = new ModelsCollection();

      return conselheiros;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getAcionistas():ModelsCollection {
      if (!acionistas)
        acionistas = new ModelsCollection();

      return acionistas;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getBeneficios():ModelsCollection {
      if (!beneficios)
        beneficios = new ModelsCollection();

      return beneficios;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getReceitaMunicipio():Municipio {
      if (!receitaMunicipio)
        receitaMunicipio = new Municipio();

      return receitaMunicipio;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getReceitaMunicipioMaisUf():String {
      return (getReceitaMunicipio().nome == "") ? '' : getReceitaMunicipio().nome + ' - ' + getReceitaMunicipio().getEstado().uf;
    }

  }
}